﻿using System;
using System.Collections.Generic;
using UD.Seguridad.Entity;
using UD.Seguridad.Service;
using System.Web.UI.HtmlControls;

namespace UD.SYSEXTUD.MASTER
{
    public delegate void MasterPageDelegate(object sender, EventArgs e);

    public partial class SYSEXTUDMasterPage : System.Web.UI.MasterPage
    {
        SeguridadService oSeguridadService = new SeguridadService();

        public event MasterPageDelegate eventoNuevo;
        MasterPageDelegate nuevoToolbar;

        public event MasterPageDelegate eventoBuscar;
        MasterPageDelegate buscarToolbar;

        public event MasterPageDelegate eventoEliminar;
        MasterPageDelegate eliminarToolbar;

        public event MasterPageDelegate eventoGuardar;
        MasterPageDelegate guardarToolbar;

        public event MasterPageDelegate eventoEditar;
        MasterPageDelegate editarToolbar;


        public void SetTituloPagina(string pTituloPagina)
        {
            tituloPagina.InnerText = pTituloPagina;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            nuevoToolbar = eventoNuevo;
            buscarToolbar = eventoBuscar;
            eliminarToolbar = eventoEliminar;
            guardarToolbar = eventoGuardar;
            editarToolbar = eventoEditar;

            if (nuevoToolbar == null)
            {
                btnAdd.Visible = false;
            }

            if (buscarToolbar == null)
            {
                btnList.Visible = false;
            }

            if (eliminarToolbar == null)
            {
                btnDelete.Visible = false;
            }

            if (guardarToolbar == null)
            {
                btnSave.Visible = false;
            }

            if (editarToolbar == null)
            {
                btnEdit.Visible = false;
            }


            ConstruirMenuLateral();
            //ConstruirMenuOpciones();

        }

        private void ConstruirMenuOpciones()
        {
            //string titulo = string.Empty;
            //if (!string.IsNullOrEmpty(Request.QueryString["titulo"]))
            //{
            //    titulo = string.Concat("Add.aspx?titulo=", Request.QueryString["titulo"]);
            //    aOpcionNuevo.HRef = string.Concat(aOpcionNuevo.HRef, titulo);
            //}
            //else
            //{
            //    aOpcionNuevo.HRef = "#";
            //}            
        }


        private void ConstruirMenuLateral()
        {
            List<Modulo> listaModulos = GetModulos();
            foreach (Modulo modulo in listaModulos)
            {
                //<li>
                //<a href="#" class="menu-link"><i class="icon-rocket"></i>Elements</a>
                //<ul>                 
                //<li>
                //<a href="page_elements_typography.html">Typography</a>
                //</li>
                //</ul>
                //</li>

                HtmlGenericControl liModulo = new HtmlGenericControl("li");
                HtmlGenericControl aModulo = new HtmlGenericControl("a");
                aModulo.Attributes.Add("href", "#");
                aModulo.Attributes.Add("class", "menu-link");
                HtmlGenericControl iModulo = new HtmlGenericControl("i");
                iModulo.Attributes.Add("class", "icon-rocket");
                aModulo.InnerText = modulo.NombreModulo.ToUpper();
                aModulo.Controls.Add(iModulo);
                liModulo.Controls.Add(aModulo);

                HtmlGenericControl ulProgramas = new HtmlGenericControl("ul");


                List<Programa> listaProgramas = GetProgramasModulo(modulo.IdModulo);
                foreach (Programa programa in listaProgramas)
                {
                    HtmlGenericControl liPrograma = new HtmlGenericControl("li");
                    HtmlGenericControl aPrograma = new HtmlGenericControl("a");
                    //aPrograma.Attributes.Add("href", "/sysextud/" + programa.CodigoPrograma);
                    if (Request.RawUrl.ToUpper().Contains("SYSEXTUD"))
                    {

                        if (!Request.RawUrl.ToUpper().Contains("ASPX"))
                        {
                            aPrograma.Attributes.Add("href", "../SYSEXTUD/" + programa.CodigoPrograma);
                        }
                        else
                        {
                            aPrograma.Attributes.Add("href", "../" + programa.CodigoPrograma);
                        }
                        //aPrograma.InnerText = Request.RawUrl.ToUpper() +  "__"+programa.NombrePrograma.ToUpper();
                    }
                    else
                    {
                        aPrograma.Attributes.Add("href", "../" + programa.CodigoPrograma);
                        //aPrograma.InnerText = Request.RawUrl.ToUpper() + "__"  +programa.NombrePrograma.ToUpper();
                    }

                    aPrograma.InnerText = programa.NombrePrograma.ToUpper();
                    
                    liPrograma.Controls.Add(aPrograma);
                    ulProgramas.Controls.Add(liPrograma);
                }
                liModulo.Controls.Add(ulProgramas);
                ulBarraMenu.Controls.Add(liModulo);

            }
        }


        private List<Modulo> GetModulos()
        {
            List<Modulo> listaModulos = (List<Modulo>)Application[UtilesHelper.appSEGURIDADModulos];
            listaModulos = listaModulos.FindAll(modulo => modulo.IdModulo.Equals(13));

            return listaModulos;
        }

        private List<Programa> GetProgramasModulo(int pIdModulo)
        {
            List<Programa> listaProgramas = ((List<Programa>)Application[UtilesHelper.appSEGURIDADProgramas]).FindAll(programa => programa.IdModulo.Equals(pIdModulo));
            return listaProgramas;
        }



        #region Eventos de botones

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            if (nuevoToolbar != null)
            {
                nuevoToolbar(sender, e);
            }
        }

        protected void btnSave_Click(object sender, EventArgs e)
        {
            if (guardarToolbar != null)
            {
                guardarToolbar(sender, e);
            }
        }

        protected void btnList_Click(object sender, EventArgs e)
        {
            if (buscarToolbar != null)
            {
                buscarToolbar(sender, e);
            }
        }

        protected void btnEdit_Click(object sender, EventArgs e)
        {
            if (editarToolbar != null)
            {
                editarToolbar(sender, e);
            }
        }

        protected void btnDelete_Click(object sender, EventArgs e)
        {
            if (eliminarToolbar != null)
            {
                eliminarToolbar(sender, e);
            }
        }

        #endregion
    }
}
